package com.cheer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cheer.dto.*;
import com.cheer.entity.StandingBook;
import com.cheer.vo.DocumentNumberVO;
import com.cheer.vo.StandingBookVO;

import java.util.List;

/**
 * @author cheer
 */
public interface StandingBookService extends IService<StandingBook> {

    /**
     * 查询台账
     *
     * @param accountId 账户Id
     */
    StandingBookVO getByAccountId(Long accountId);

    /**
     * 保存台账
     *
     * @param accountId           账户Id
     * @param standingBookSaveDTO 台账信息
     */
    void saveStandingBook(Long accountId, StandingBookSaveDTO standingBookSaveDTO);

    /**
     * 查询台账文档
     *
     * @param accountId 账户Id
     */
    List<DocumentNumberVO> getDocument(Long accountId);

    /**
     * 保存台账文档
     *
     * @param accountId    账户Id
     * @param documentDTOS 文档信息
     */
    void saveDocument(Long accountId, List<DocumentDTO> documentDTOS);

    /**
     * 批量下载台账文档
     *
     * @param accountId 账户Id
     */
    String downloadDocument(Long accountId);

    /**
     * 提交台账
     *
     * @param accountId             账户Id
     * @param standingBookSubmitDTO 提交信息
     */
    void submitStandingBook(Long accountId, StandingBookSubmitDTO standingBookSubmitDTO);

    /**
     * 查询集体台账
     *
     * @param applicantId 集体Id
     */
    StandingBookVO getByApplicantId(Long applicantId);

    /**
     * 查询集体台账资料
     *
     * @param applicantId 集体Id
     */
    List<DocumentNumberVO> getDocumentByApplicantId(Long applicantId);

    /**
     * 批量下载台账文档
     *
     * @param applicantId 集体Id
     */
    String downloadDocumentByApplicantId(Long applicantId);

    /**
     * 查询集体台账资料
     *
     * @param reviewId 审核Id
     */
    StandingBookVO getByReviewId(Long reviewId);

    /**
     * 查询集体台账资料
     *
     * @param reviewId 审核Id
     */
    List<DocumentNumberVO> getDocumentByReviewId(Long reviewId);

    /**
     * 保存台账
     *
     * @param standingBookSaveInReviewDTO 台账信息
     */
    void saveStandingBookByReview(StandingBookSaveInReviewDTO standingBookSaveInReviewDTO);

    /**
     * 保存台账文档
     *
     * @param standingBookDocumentSaveDTO 台账文档信息
     */
    void saveDocumentByReview(StandingBookDocumentSaveDTO standingBookDocumentSaveDTO);

    /**
     * 批量下载台账文档
     *
     * @param reviewId 审核Id
     */
    String downloadDocumentByReviewId(Long reviewId);

    /**
     * 省级文明号申请
     *
     * @param accountId 账户Id
     */
    Boolean apply(Long accountId);


    void patch();
}
